package com.leehom.arch.base.reportquery.dynsql;

import java.io.Serializable;
import java.util.List;
import java.util.Map;

import com.leehom.arch.base.reportquery.TypeEnum;
import com.leehom.arch.base.reportquery.dynsql.option.Option;

import lombok.Data;

/**
 * @类名: SqlPiece
 * @说明: sql块
 *
 * @author   leehom
 * @Date	 2015年3月30日 上午10:25:42
 * 修改记录：
 *
 * @see 	
 * 
 * TODO
 *   > 最近一段时间
 */
@Data
public class SqlPiece implements Serializable {

	private Long id;
	/** 关联参数，参数表达式*/
	private String paramName;
	private TypeEnum paramType;	
	/** 选项*/
	private List<Option> options;
	
	/**
	 * @说明：根据输入参数，判断sql块选择哪个选项(Option)
	 *
	 * @author leehom
	 * @param params
	 * @param values
	 * @return
	 * 
	 */
	public String getPiece(Map<String, Object> params) {
		// 没有传参，返回""
		if(params.containsKey(paramName)) {
			for(Option p : options) {
				boolean b = p.isThis(paramName, params);
				if(b)
					return p.getPart();
			}
			// 无效参数去掉，容错能力
			params.remove(paramName);
		} else {
			// 无效参数去掉，容错能力
			params.remove(paramName);
		}
		// 占位
		return "";
	}

	
}
